home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / fltgpt10.arc / MULT.ASM < prev    next >
Encoding:
Assembly Source File  |  1983-11-17  |  4.2 KB  |  168 lines

  1.  
  2. **********************************************************************
  3. *
  4. *    THIS IS A FLOATING POINT MULTIPLICATION ROUTINE WHICH IMPLEMENTS
  5. *    THE IEEE PROPOSED FLOATING POINT FORMAT ON THE TMS32010.
  6. *
  7. **********************************************************************
  8. *
  9. *    INITIAL FORMAT (ALL 16 BIT WORDS)
  10. *    ------------------
  11. *    |   ALL 0 OR 1   |       ASIGN (0 OR -1)
  12. *    ------------------
  13. *
  14. *    ------------------
  15. *    |0|. 15 BITS     |       AHI (NORMALIZED)
  16. *    ------------------
  17. *
  18. *    ------------------
  19. *    |0| 9 BITS |--0--|       ALO
  20. *    ------------------
  21. *
  22. *    ------------------
  23. *    |                |       AEXP (-127 TO 128)
  24. *    ------------------
  25. *
  26. *    TO HAVE THIS CORRESPOND TO IEEE FORMAT, INPUT 0.1F * 2 ** (E + 1)
  27. *    INSTEAD OF 1.F * 2 ** E AND SUBTRACT 127 FROM E.
  28. *
  29. *    THE FINAL FORMAT IS THE SAME AS THE INITIAL FORMAT EXCEPT THAT
  30. *    FOR CLO WE HAVE:
  31. *
  32. *    ------------------
  33. *    |    16 BITS     |       CLO
  34. *    ------------------
  35. *
  36. *    THE 16 BITS OF CLO ARE VALID.  ANYTHING PAST THESE HAS BEEN
  37. *    TRUNCATED.
  38. *
  39. **************************************************************************
  40. *
  41. *    WORST CASE (EXCLUDING INITIALIZATION AND I/0): 8.4 MICROSECONDS
  42. *    WORDS OF PROGRAM MEMORY: 72
  43. *
  44. ***************************************************************************
  45. *
  46. MULT IDT 'IEEEMULT'
  47.      DSEG
  48. *
  49. AEXP BSS 1
  50. AHI BSS 1
  51. ALO BSS 1
  52. ASIGN BSS 1
  53. BEXP BSS 1
  54. BHI BSS 1
  55. BLO BSS 1
  56. BSIGN BSS 1
  57. CEXP BSS 1
  58. CHI BSS 1
  59. CLO BSS 1
  60. CSIGN BSS 1
  61. TLO BSS 1
  62. THI BSS 1
  63. CLOHI BSS 1
  64. M0003 BSS 1
  65. ONE BSS 1
  66. NEGONE BSS 1
  67. TWO BSS 1
  68. *
  69.      DEND
  70. *
  71.      PSEG      * BEGIN THE PROGRAM SEGMENT *
  72. *
  73.           IN ASIGN,PA0     * INPUT *
  74.           IN AEXP,PA0
  75.           IN AHI,PA0
  76.           IN ALO,PA0
  77.           IN BSIGN,PA0
  78.           IN BEXP,PA0
  79.           IN BHI,PA0
  80.           IN BLO,PA0
  81. *              * FINISHED THE INPUT ROUTINE *
  82. START     LACK 1   * A LITTLE INITIALIZATION *
  83.           SACL ONE
  84.           LACK 3
  85.           SACL M0003
  86.           ZAC
  87.           SUB ONE
  88.           SACL NEGONE
  89.           LACK 2
  90.           SACL TWO
  91. *              * DONE WITH THE INITIALIZATION *
  92. *              * ADD EXPONENTS *
  93.           LAC AEXP
  94.           ADD BEXP
  95.           SACL CEXP      * CEXP = AEXP + BEXP *
  96. *              * FINISHED ADDING EXPONENTS *
  97. *              * MULTIPLY MANTISSAS *
  98.           LT ALO    * FIRST PRODUCT, (ALO * BHI) *
  99.           MPY BHI
  100.           PAC
  101.           SACH THI
  102.           SACL TLO
  103. *
  104.           LT AHI    * SECOND PRODUCT, (AHI * BLO) *
  105.           MPY BLO
  106. *
  107.           APAC      * (ALO * BHI + AHI * BLO) *
  108. *
  109.           APAC      * HAS THE EFFECT OF (AHI * BLO + ALO * BHI)
  110. *                     * 2 ** -15 *
  111.           ADDH THI
  112.           ADDS TLO
  113.           SACH THI
  114. *
  115.           MPY BHI   * (AHI * BHI) *
  116.           PAC
  117.           ADDS THI
  118. *
  119.           SACH CHI,1     * GET RID OF EXTRA SIGN BIT *
  120.           SACL CLO
  121. *                   * THE (ALO * BLO * 2 ** -30) IS LOST DUE TO THE
  122. *                     IEEE FORMAT *
  123. *                   * FINISHED MULTIPLYING THE MANTISSAS *
  124. *
  125. *                   * CHECK SPECIAL CASES AND WRAP THINGS UP *
  126.           BNZ OK    * CHI AND CLO ARE STILL IN THE ACC *
  127. *
  128.           ZAC       * IF C IS ZERO LOAD CEXP WITH ZERO *
  129.           SACL CEXP
  130.           B SETSIN  * BRANCH TO SET THE SIGN *
  131. *
  132. OK        LAC CLO,1      * TAKING CARE OF EXTRA SIGN BIT AS ABOVE *
  133.           SACL CLO
  134.           LAC ONE,14     * MASK OFF POSSIBLE MSB *
  135.           AND CHI
  136.           BNZ SETSIN     * BRANCH IF NORMALIZATION NOT NECESSARY *
  137. *
  138. SHIFT1    LAC CEXP       * HERE A LEFT SHIFT OF ONE IS NECESSARY *
  139.           SUB ONE
  140.           SACL CEXP
  141. *
  142.           ZALH CHI
  143.           ADDS CLO
  144.           SACH CHI,1
  145.           LAC CLO,1
  146.           SACL CLO
  147. *
  148. SETSIN    ZALS ASIGN
  149.           XOR BSIGN
  150.           BNZ NEG        * IF ASIGN XOR BSIGN != 0 THE PRODUCT IS NEGATIVE *
  151. *
  152.           ZAC
  153.           SACL CSIGN
  154.           B OUTPUT
  155. *
  156. NEG       LAC NEGONE     * NEGONE = -1 *
  157. *
  158.           SACL CSIGN
  159. *
  160. OUTPUT      OUT CSIGN,PA1
  161.       OUT CEXP,PA1
  162.        OUT CHI,PA1
  163.       OUT CLO,PA1
  164. *
  165. SELF      B SELF
  166. *
  167. *                   * END THE PROGRAM SEGMENT *
  168.           END